home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Merciful 2
/
Merciful - Disc 2.iso
/
software
/
v
/
varkcliutils11.dms
/
varkcliutils11.adf
/
VARK
/
ScreenNotify10.lha
/
ScreenNotify
/
screennotify.doc
< prev
next >
Wrap
Text File
|
1995-03-26
|
10KB
|
310 lines
TABLE OF CONTENTS
screennotify.library/AddCloseScreenClient
screennotify.library/AddPubScreenClient
screennotify.library/AddWorkbenchClient
screennotify.library/RemCloseScreenClient
screennotify.library/RemPubScreenClient
screennotify.library/RemWorkbenchClient
screennotify.library/AddCloseScreenClient screennotify.library/AddCloseScreenClient
NAME
AddCloseScreenClient -- Add a client for CloseScreen() notifications
SYNOPSIS
handle = AddCloseScreenClient(screen, msgport, priority)
D0 A0 A1 D0
APTR AddCloseScreenClient(struct Screen *, struct MsgPort *, BYTE);
FUNCTION
Add a task as client for CloseScreen() notifications. Each time
the specified (or any) screen will be closed a ScreenNotifyMessage
is sent to the message port. The snm_Type field will contain the
value SCREENNOTIFY_TYPE_CLOSESCREEN. The snm_Value field will
contain the pointer to the screen structure.
NOTES
When a task with an active CloseScreen() notification calls
CloseScreen() it won't receive a notification in order to
prevent a dead lock!
When a task with no free signal bits calls CloseScreen() the
notification will not be sent!
INPUTS
screen - pointer to the screen structure or NULL to match any screen
msgport - pointer to a message port to which the notification
messages should be sent
priority - priority for client in the notification list [-128..127]
RESULTS
handle - non-NULL if registration was successful
EXAMPLES
struct Screen *s;
struct MsgPort *p;
APTR handle;
struct ScreenNotifyMessage *snm;
if (p = CreateMsgPort()) {
if (handle = AddCloseScreenClient(s, p, 0)) {
....
while (snm = (struct ScreenNotifyMessage *) GetMsg(p)) {
if (snm->snm_Type == SCREENNOTIFY_TYPE_CLOSESCREEN) {
/* Screen was closed, do your stuff */
....
}
ReplyMsg((struct Message *) snm);
}
....
while (!RemCloseScreenClient(handle)) Delay(10);
}
DeleteMsgPort(p);
}
SEE ALSO
RemCloseScreenClient(), libraries/screennotify.h
screennotify.library/AddPubScreenClient screennotify.library/AddPubScreenClient
NAME
AddPubScreenClient -- Add a client for PubScreenStatus() notifications
SYNOPSIS
handle = AddPubScreenClient(msgport, priority)
D0 A0 D0
APTR AddPubScreenClient(struct MsgPort *, BYTE);
FUNCTION
Add a task as client for PubScreenStatus() notifications. Each time
this function is called to modify the PSNF_PRIVATE flag of a public
screen a ScreenNotifyMessage is sent to the message port. The snm_Type
field will contain the value SCREENNOTIFY_TYPE_PUBLICSCREEN when the
flag is cleared (the screen is made public). The snm_Type field will
contain the value SCREENNOTIFY_TYPE_PRIVATESCREEN when the flag is set
(the screen will be made private). The snm_Value field will contain
the pointer to the PubScreenNode structure.
NOTES
When a task with an active PubScreenStatus() notification calls
PubScreenStatus() it won't receive a notification to in order to
prevent a dead lock!
When a task with no free signal bits calls PubScreenStatus() the
notification will not be sent!
Under certain circumstances it may not be possible to find out the
PubScreenNode for the screen. In these cases no notification will
be sent.
WARNING
Programs using PubScreenStatus() (or Intuition functions which use
this function) after locking the public screen list will cause a
dead lock. E.g. MUI 2.3 (or older) has this problem, but it will be
fixed in future MUI versions.
INPUTS
msgport - pointer to a message port to which the notification
messages should be sent
priority - priority for client in the notification list [-128..127]
RESULTS
handle - non-NULL if registration was successful
EXAMPLES
struct Screen *s;
struct MsgPort *p;
APTR handle;
struct ScreenNotifyMessage *snm;
if (p = CreateMsgPort()) {
if (handle = AddPubScreenClient(s, p, 0)) {
....
while (snm = (struct ScreenNotifyMessage *) GetMsg(p)) {
switch (snm->snm_Type) {
case SCREENNOTIFY_TYPE_PUBLICSCREEN:
/* A screen was made public, do your stuff */
....
break;
case SCREENNOTIFY_TYPE_PRIVATESCREEN:
/* A screen will be made private, do your stuff */
....
break;
}
ReplyMsg((struct Message *) snm);
}
....
while (!RemCloseScreenClient(handle)) Delay(10);
}
DeleteMsgPort(p);
}
SEE ALSO
RemCloseScreenClient(), libraries/screennotify.h
screennotify.library/AddWorkbenchClient screennotify.library/AddWorkbenchClient
NAME
AddWorkbenchClient -- Add a client for Workbench notifications
SYNOPSIS
handle = AddWorkbenchClient(msgport, priority)
D0 A0 D0
APTR AddWorkbenchClient(struct MsgPort *, BYTE);
FUNCTION
Add a task as client for Workbench notifications. Each time the
Workbench will be closed or opened a ScreenNotifyMessage is sent
to the message port. The snm_Type field will contain the value
SCREENNOTIFY_TYPE_WORKBENCH. The snm_Value field will contain one
of the following values:
FALSE - The Workbench will be closed. The client should close
all its windows on the Workbench screen.
TRUE - The Workbench is open. The client may open its windows
on the Workbench screen again.
NOTES
When a task with an active Workbench notification calls
CloseWorkBench() or OpenWorkBench() it won't receive a
notification in order to prevent a dead lock!
When a task with no free signal bits calls CloseWorkBench() or
OpenWorkBench() the notification will not be sent!
INPUTS
msgport - pointer to a message port to which the notification
messages should be sent.
priority - priority for client in the notification list [-128..127]
RESULTS
handle - non-NULL if registration was successful
EXAMPLES
struct MsgPort *p;
APTR handle;
struct ScreenNotifyMessage *snm;
if (p = CreateMsgPort()) {
if (handle = AddWorkbenchClient(p, 0)) {
....
while (snm = (struct ScreenNotifyMessage *) GetMsg(p)) {
if (snm->snm_Type == SCREENNOTIFY_TYPE_WORKBENCH)
switch (snm->snm_Value) {
case FALSE: /* Workbench close notification */
....
break;
case TRUE: /* Workbench open notification */
....
break;
}
ReplyMsg((struct Message *) snm);
}
....
while (!RemWorkbenchClient(handle)) Delay(10);
}
DeleteMsgPort(p);
}
SEE ALSO
RemWorkbenchClient(), libraries/screennotify.h
screennotify.library/RemCloseScreenClient screennotify.library/RemCloseScreenClient
NAME
RemCloseScreenClient -- Remove a client for CloseScreen() notifications
SYNOPSIS
success = RemCloseScreenClient(handle)
D0 A0
BOOL RemCloseScreenClient(APTR);
FUNCTION
Remove a client from the notification list.
INPUTS
handle - value returned by AddCloseScreenClient().
RESULTS
success - TRUE if the client could successfully be removed.
FALSE if the library was busy. The task should go to
sleep for a short while and then retry.
EXAMPLES
APTR handle;
....
while (!RemCloseScreenClient(handle)) Delay(10);
SEE ALSO
AddCloseScreenClient()
screennotify.library/RemPubScreenClient screennotify.library/RemPubScreenClient
NAME
RemPubScreenClient -- Remove a client for PubScreenStatus() notifications
SYNOPSIS
success = RemPubScreenClient(handle)
D0 A0
BOOL RemPubScreenClient(APTR);
FUNCTION
Remove a client from the notification list.
INPUTS
handle - value returned by AddPubScreenClient().
RESULTS
success - TRUE if the client could successfully be removed.
FALSE if the library was busy. The task should go to
sleep for a short while and then retry.
EXAMPLES
APTR handle;
....
while (!RemPubScreenClient(handle)) Delay(10);
SEE ALSO
AddPubScreenClient()
screennotify.library/RemWorkbenchClient screennotify.library/RemWorkbenchClient
NAME
RemWorkbenchClient -- Remove a client for Workbench notifications
SYNOPSIS
success = RemWorkbenchClient(handle)
D0 A0
BOOL RemWorkbenchClient(APTR);
FUNCTION
Remove a client from the notification list.
INPUTS
handle - value returned by AddWorkbenchClient().
RESULTS
success - TRUE if the client could successfully be removed.
FALSE if the library was busy. The task should go to
sleep for a short while and then retry.
EXAMPLES
APTR handle;
....
while (!RemWorkbenchClient(handle)) Delay(10);
SEE ALSO
AddWorkbenchClient()